5、日期问题

题目 日期问题

image-b9c04916

思路分析

日期问题 上来一套组合拳

枚举范围内的每个日期 检查是否存在合法方案

代码实现

#include<bits/stdc++.h>
using namespace std;

int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

bool is_leap(int y){
  return y%100 && y%4==0 || y%400==0;
}

int getdays(int y,int m){
  return days[m]+(m==2 && is_leap(y));
}

void nextday(int &y,int &m,int &d){
  d++;
  if(d>getdays(y,m)){
    d=1;
    m++;
    if(m>12){
      m=1;
      y++;
    }
  }
}

int main()
{
  	int one,two,three;
  	scanf("%d/%d/%d",&one,&two,&three);
  	int cury=1960,curm=1,curd=1;
   	while (cury < 2060) {
    	if(cury%100==one && curm==two && curd==three //yymmdd
      	||
      	 cury%100==three && curm==one && curd==two //mmddyy
      	||
      	 cury%100==three && curm==two && curd==one //ddmmyy
   		){
      		printf("%d-%02d-%02d\n",cury,curm,curd);
    	}
   	 	nextday(cury,curm,curd);
  	}
  return 0;
}

同类题型

视频讲解


⬅️ 4、方格分割 🏠 00-刷题理模型 ➡️ 6、包子凑数